package gestordeentidades.persistance.interfaces;

/**
 * Trabalho DAS - 2014/2015
 * Adaptador da base de dados, para ser implementado por classes que permitam executar:
 * leitura, inserção, atualização de base de dados.
 * @author a21210380, a21190325, a21210392
 */
public interface IDataBaseAdapter {

    /**
     * Executa o IDataBaseStatement e por cada linha lida chama o IDataBaseRow, para receber a linha
     * @param dataBaseStatement
     * @param dataBaseRow receptor das linhas lidas
     */
    public void ler(IDataBaseStatement dataBaseStatement, IDataBaseRow dataBaseRow);

    /**
     * Executa o IDataBaseStatement
     * @param dataBaseStatement
     * @return o número de linhas atualizadas
     */
    public int atualizar(IDataBaseStatement dataBaseStatement);

    /**
     * Executa o IDataBaseStatement
     * @param dataBaseStatement
     * @return o número de linhas inseridas
     */
    public int inserir(IDataBaseStatement dataBaseStatement);
    
    /**
     * Executa o IDataBaseStatement
     * @param dataBaseStatement
     * @return o número de linhas apagadas
     */
    public int apagar(IDataBaseStatement dataBaseStatement);

    /**
     * Executa um comando sql sem return
     * @param sql
     */
    public void executarSql(String sql);

    /**
     * Obter um IDataBaseStatement para criar um comando sql
     * @param sql
     * @return IDataBaseStatement
     */
    public IDataBaseStatement getDataBaseStatement(String sql);
}
